// 二．示例一：三个售票窗口同时出售20张票;
// 程序分析：
// 1.票数要使用同一个静态值。
// 2.为保证不会出现卖出同一个票数，要java多线程同步锁。
// 设计思路：
// 1.创建一个站台类Station，继承Thread，重写run方法，在run方法里面执行售票操作！售票要使用同步锁：即有一个站台卖这张票时，其他站台要等这张票卖完。
// 2.创建主方法调用类。


public class Station extends Thread
{
    //构造方法
    public Station(String name)
    {
        super(name);//为线程名字赋值
    }
    static int ticket = 20;//票数

    //同步静态方法
    public static synchronized boolean sellTicket()
    {
        if(ticket > 0 )
        {
            System.out.println(Thread.currentThread().getName() + "卖出了第" + ticket + "张票");
            ticket--;
            return true;
        }
        else
        {
            System.out.println("票卖完了");
            return false;
        }
    }

    public void run()
    {
        while(true)
        {
            boolean flag = sellTicket();
            if(!flag)
            {
                break;
            }
            try
            {
            sleep(1000);
            }
            catch(InterruptedException e)
            {
                e.printStackTrace();
            }
        }


    }
}

//创建主方法调用类  
class Main{
    public static void main(String[] args)
    {
        Station s1 = new Station("窗口1");
        Station s2 = new Station("窗口2");
        Station s3 = new Station("窗口3");

        s1.start();
        s2.start();
        s3.start();
    }
}
